#　在程序中没有被引用的对象就是垃圾，这种垃圾对象过多后会影响到程序的运行性能
# 所以我们必须进行及时的垃圾回收，所有的垃圾回收就是将垃圾对象从内存中删除
# 在python中有自动垃圾回收机制，他会自动将这些没有被引用的对象删除

class A:
    def __init__(self):
        self.name="Ａ类"

    #del是一个特殊方法，他会在对象被垃圾回收前调用
    def __del__(self):
        print("Ａ()对象被删除了～～",id(self))

#a和Ａ()产生绑定关系，a引用了Ａ()
a=A()
b=a
print(a.name)

print(id(a))

#取消上一步的引用，此时A()这个对象没有被任何变量引用，因此会被删除
a=None

#此时a变量已经不在指向A()，但是b还在指向A()因此内存地址不会被回收，注意b是复制了一份引用，a的引用改变不会影响b指向A()
print(id(a))
print(id(b))

#此时再删除b，A()没有任何引用了，因此这个对象被删除了
b=None

#为了让程序夯在这里，否则程序执行完A()肯定被删除，看不出效果
input("回车键退出")
